﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using TumbaloSoft.Models;
using System.Collections;
using TumbaloSoft.Helpers;
using TumbaloSoft.Helpers.QueryObjects;
using System.Web.Helpers;
using System.IO;
using System.Net.Mail;
using System.Net;

namespace TumbaloSoft.Controllers
{
	public class PerfilPropietarioController : TumbaloController
    {
        private static Object lockObject = new Object();
        //
        // GET: /Inmueble/

        public ActionResult Index()
        {
		   if (defaultAction != null) return defaultAction;
		   ViewBag.idPersona = AccountController.getIdPersona(HttpContext);
            return View();
        }

        //Registrar Quejas
        public ActionResult RegistrarQueja()
        {
            //linea de login y permisos
            if (defaultAction != null) return defaultAction;
            try
            {
                //Saco el id Persona del perfil que es el id propietario
                int idPropietario = AccountController.getIdPersona(HttpContext);
                //Obtengo los departamentos con el id del propietario
                ViewBag.listaDepartamento = HelperDepartamento.selectByIdPropietario(idPropietario);
                foreach (var departamento in ViewBag.listaDepartamento)
                {
                    //Encontrar el nombre del Edificio
                    Edificio edificio = HelperEdificio.selectById(departamento.prEdificio.prIdEdificio);
                    departamento.prEdificio = edificio;
                }
            }
            catch
            {
                return View("~/Views/Shared/Error.cshtml");
            }
            return View();
        }

        [HttpPost]
        public ActionResult RegistrarQueja(Observacion obs, int idDepartamento)
        {
            //linea de login y permisos
            if (defaultAction != null) return defaultAction;
            try
            {

                //Saco el id Persona del perfil que es el id propietario
                int idPropietario = AccountController.getIdPersona(HttpContext);
                //Obtengo los departamentos con el id del propietario
                ViewBag.listaDepartamento = HelperDepartamento.selectByIdPropietario(idPropietario);
                //Le asigno el propietario a la observacion
                obs.prPropietarioRegistro = HelperPropietario.selectById(idPropietario);
                //Obtengo para el idDepartamento el idEdifcio
                Departamento departamento = HelperDepartamento.selectById(idDepartamento);
                obs.prEdificioRegistro = HelperEdificio.selectById(departamento.prEdificio.prIdEdificio);
                //Genero el tipo de observacion
                obs.prTipoObservacion = new TipoObservacion();
                obs.prTipoObservacion.prIdTipoObservacion = 1;
                //Asigno el estado a la observacion
                obs.prEstado = "REGISTRADO";
                if (ModelState.IsValidField("prDescripcion") && ModelState.IsValidField("prFechaRegistro"))
                {
                    lock (lockObject)
                    {
                        obs.prIdObservacion = HelperObservacion.SiguienteCodigo();
                        HelperObservacion.ObservacionInsertPropietario(obs);
                        ViewBag.mensaje = "Se registro correctamente su Queja";
                        ViewBag.returnURL = "/PerfilPropietario";
                        return View("~/Views/Shared/Exito.cshtml");
                    }
                }
            }
            catch
            {
                return View("~/Views/Shared/Error.cshtml");
            }
            return View(obs);
        }
        //Fin Registrar Quejas

        //Registrar Observacion
        public ActionResult RegistrarObservacion()
        {
            try
            {
                //linea de login y permisos
                if (defaultAction != null) return defaultAction;
                //Saco el id Persona del perfil que es el id propietario
                int idPropietario = AccountController.getIdPersona(HttpContext);
                //Obtengo los departamentos con el id del propietario
                ViewBag.listaDepartamento = HelperDepartamento.selectByIdPropietario(idPropietario);
                foreach (var departamento in ViewBag.listaDepartamento)
                {
                    //Encontrar el nombre del Edificio
                    Edificio edificio = HelperEdificio.selectById(departamento.prEdificio.prIdEdificio);
                    departamento.prEdificio = edificio;
                }
            }
            catch
            {
                return View("~/Views/Shared/Error.cshtml");
            }
            return View();
        }

        [HttpPost]
        public ActionResult RegistrarObservacion(Observacion obs, int idDepartamento)
        {
            //linea de login y permisos
            if (defaultAction != null) return defaultAction;
            try
            {

                //Saco el id Persona del perfil que es el id propietario
                int idPropietario = AccountController.getIdPersona(HttpContext);
                //Obtengo los departamentos con el id del propietario
                ViewBag.listaDepartamento = HelperDepartamento.selectByIdPropietario(idPropietario);
                //Le asigno el propietario a la observacion
                obs.prPropietarioRegistro = HelperPropietario.selectById(idPropietario);
                //Obtengo para el idDepartamento el idEdifcio
                Departamento departamento = HelperDepartamento.selectById(idDepartamento);
                obs.prEdificioRegistro = HelperEdificio.selectById(departamento.prEdificio.prIdEdificio);
                //Genero el tipo de observacion
                obs.prTipoObservacion = new TipoObservacion();
                obs.prTipoObservacion.prIdTipoObservacion = 3;
                //Asigno el estado a la observacion
                obs.prEstado = "REGISTRADO";
                if (ModelState.IsValidField("prDescripcion") && ModelState.IsValidField("prFechaRegistro"))
                {
                    lock (lockObject)
                    {
                        obs.prIdObservacion = HelperObservacion.SiguienteCodigo();
                        HelperObservacion.ObservacionInsertPropietario(obs);
                        ViewBag.mensaje = "Se registro correctamente su Observacion";
                        ViewBag.returnURL = "/PerfilPropietario";
                        return View("~/Views/Shared/Exito.cshtml");
                    }
                }
            }
            catch
            {
                return View("~/Views/Shared/Error.cshtml");
            }
            return View(obs);
        }
        //Fin Registrar Observacion    
   
    }
}